home *** CD-ROM | disk | FTP | other *** search
- /* DriverGestaltHandler.c */
- /*
- * DriverGestaltHandler.c
- * Copyright © 1994 Apple Computer Inc. All rights reserved.
- *
- */
- /* .___________________________________________________________________________________.
- | This subroutine is called by the Driver Status function to handle Driver Gestalt |
- | (PBStatus csCode 43) requests. You could use this as a template, extending and |
- | modifying it for your particular needs. |
- .___________________________________________________________________________________.
- */
-
- #include "NCRDriverPrivate.h"
-
- /*
- * Called on PBStatus, csCode = 43
- */
- OSErr
- DriverGestaltHandler(
- register CntrlParam *pb
- )
- {
- OSErr status;
- UInt32 defaultPowerConsumption;
- #define PB (*((DriverGestaltParam *) pb))
- #define OPTIONS (TheDriverDescription.driverOSRuntimeInfo)
-
- Trace(DriverGestaltHandler);
- PB.driverGestaltResponse = 0;
- status = noErr;
- switch (PB.driverGestaltSelector) {
- case driverGestaltSync:
- PB.driverGestaltResponse = FALSE; /* We handle asynchronous I/O */
- break;
- case driverGestaltVersion:
- PB.driverGestaltResponse =
- *((long *) &TheDriverDescription.driverType.version);
- break;
- case driverGestaltDeviceType:
- /*
- * I don't know the proper type for this device -- although we perform
- * SCSI operations, that might confuse callers who would presume that
- * this driver is used by SCSI Manager 4.3, which is incorrect.
- * In the meantime, I'll use the creator type (which is all uppercase).
- */
- PB.driverGestaltResponse = kCreatorType;
- break;
- case driverGestaltInterface:
- PB.driverGestaltResponse = 'pci ';
- break;
- case kDriverGestaltPowerSwitch: /* Support Power up/down switching? */
- PB.driverGestaltResponse = FALSE; /* Not supported yet */
- break;
- case kDriverGestaltPowerMode: /* TRUE if in high-power mode */
- PB.driverGestaltResponse = TRUE; /* Power-switching is not supported */
- break;
- case kDriverGestalt5MaxHighPower: /* Max 5 volt uAmps in high-power mode */
- /*
- * Response in microwatts - Idd (mAmp) * Vdd (Volts) * 1000 from handbook
- */
- defaultPowerConsumption = (130L * 1000L * 5L);
- goto driverPowerCommon;
- case kDriverGestalt5MaxLowPower: /* Max 5 volt uAmps in low-power mode */
- /*
- * Response in microwatts - Idd (mAmp) * Vdd (Volts) * 1000 from handbook
- */
- defaultPowerConsumption = (1L * 1000L * 5L);
- goto driverPowerCommon;
- case kDriverGestalt3MaxHighPower: /* Max 3 volt uAmps in high-power mode */
- defaultPowerConsumption = 0;
- goto driverPowerCommon;
- case kDriverGestalt3MaxLowPower: /* Max 3 volt uAmps in low-power mode */
- defaultPowerConsumption = 0;
- goto driverPowerCommon;
- driverPowerCommon:
- PB.driverGestaltResponse = GetDevicePowerConsumption(
- &GLOBAL.deviceEntry,
- PB.driverGestaltSelector,
- defaultPowerConsumption
- );
- break;
- default:
- LogHex(PB.driverGestaltSelector, "\pUnknown driver gestalt");
- status = statusErr;
- break;
- }
- return (status);
- #undef PB
- }
-